<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			td {
				width: 40px;
				height: 40px;
			}
			
			.heise {
				background-color: #27180B;
			}
			
			.huise {
				background-color: #CEB384;
			}
		</style>
	</head>

	<body>
		<script type="text/javascript">
			/***********************************
			1.请写出javascript的三种循环
			***********************************/
			var arr1 = [1, 2, 3, 4, 5];
			//for循环
			for(var i = 0; i < arr1.length; i++) {
				console.log(arr1[i]);
			}
			
			//while循环
			var j = 0;
			while(j < arr1.length) {
				console.log(arr1[i]);
				j++;
			}
			
			//do...while循环
			var z = 0;
			do{
				console.log(arr1[z]);
				z++;
			}while(z < arr1.length)

			/***********************************
			2.请写出break和continue作用和区别
			***********************************/
			/**
			 * break中断当前全部循环
			 * continue跳过本次循环
			 */
			
			
			/***********************************
			3.有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求出这个数列的前20项之和。
			(程序分析：请抓住分子与分母的变化规律。)
			***********************************/
			var fenzi = 2,
				fenmu = 1,
				sum = 0;
			for(var i = 0; i < 20; i++) {
				sum += fenzi / fenmu;
				var tmp = fenmu
				fenmu = fenzi;
				fenzi = tmp + fenzi;
			}
			document.write("前20项之和是：" + sum + "<br/>");

			/***********************************
			4.有一座桥，当你身上所拥有的钱大于30000时，每过一次桥则需要支付3000元。当你身上的钱小于或等于30000时，每过一次桥则需要支付你身上10%的钱。已知有一个人身上有33000元，问此人能过这座桥多少次之后，身上的钱会少于100块?
			***********************************/
			var total = 33000,
				i = 0;
			while(total >= 100) {
				if(total > 30000) {
					total -= 3000;
				} else {
					total *= .9;
				}
				i++;
			}
			document.write("能过这座桥" + i + "次<br/>");

			/***********************************
			5.小明去存1000钱，每天会产生1%的利息，求问，30天后，小明可以拿回多少钱
			***********************************/
			var sum = 1000;
			for(var i = 1; i <= 30; i++) {
				sum *= 1.01;
			}
			document.write("总共产生的利息 ：" + sum + "<br/>");

			/***********************************
			6.小明题目升级版，小明拿着1000块在周一买入基金，一开户立给10块红利，
			逢周六日没有利息，平时利息为1%，请问30天后，小明可以拿回多少钱？
			***********************************/
			var sum = 1010;
			for(var i = 1; i <= 30; i++) {
				if(i % 7 == 0 || i % 7 == 6) {
					continue;
				}
				sum *= 1.01;
			}
			document.write("总共产生的利息 ：" + sum + "<br/>");

			/***********************************
			7.乘法口诀表:
			让学生输出4种方向的乘法口诀表
			***********************************/
			document.write('<table border="1">');
			for(var a = 1; a <= 9; a++) {
				document.write('<tr>');
				for(var b = 1; b <= 9; b++) {
					document.write('<td width="45px">');
					if(b <= a) {
						document.write(a + '*' + b + '=' + a * b);
					} else {
						document.write('');
					}
					document.write('</td>');
				}
				document.write('</tr>');
			}
			document.write('</table>');

			document.write('<table border="1">');
			for(var a = 9; a > 0; a--) {
				document.write('<tr>');
				for(var b = 1; b <= 9; b++) {
					document.write('<td width="45px">');
					if(b <= a) {
						document.write(b + '*' + a + '=' + a * b);
					} else {
						document.write('');
					}
					document.write('</td>');
				}
				document.write('</tr>');
			}
			document.write('</table>');

			document.write('<table border="1">');
			for(var a = 1; a <= 9; a++) {
				document.write('<tr>');
				for(var b = 9; b > 0; b--) {
					document.write('<td width="45px">');
					if(b <= a) {
						document.write(b + '*' + a + '=' + a * b);
					} else {
						document.write('')
					}
					document.write('</td>');
				}
				document.write('</tr>');
			}
			document.write('</table>');

			document.write('<table border="1">');
			for(var a = 9; a > 0; a--) {
				document.write('<tr>');
				for(var b = 9; b > 0; b--) {
					document.write('<td width="45px">');
					if(b <= a) {
						document.write(b + '*' + a + '=' + a * b);
					}
					document.write('</td>');
				}
				document.write('</tr>');
			}
			document.write('</table>');

			/***********************************
			8.给一个不多于5位的正整数，要求：一、求它是几位数，二、逆序打印出各位数字。
			***********************************/
			var num = 1234;
			var str = num + "";
			console.log("是" + str.length + "位数");
			for(var i = str.length - 1; i >= 0; i--) {
				console.log(str[i]);
			}

			/***********************************
			9.求100个随机数之和，随机数要求为0—9的整数
			***********************************/
			var sum = 0;
			for(var i = 0; i < 100; i++) {
				var rand = Math.floor(Math.random() * 10);
				sum += rand;
			}
			console.log(sum);

			/***********************************
			10.通过键盘输入一个任意的正整数（建议这个数比3大），
			在网页中输出3至这个数之间所有能被3整除的数字。
			***********************************/
			var intNum = prompt("请输入一个大于3的整数");
			for(var i = 3; i <= intNum; i++) {
				if(i % 3 == 0) {
					document.write(i + "<br />");
				}
			}

			/***********************************
			11.黑白棋   奇数行 && 奇数列 || 偶数行 && 偶数列
			***********************************/
			function chess(a) {
				document.write('<table cellspacing=0px;>');
				for(var i = 1; i <= a; i++) {
					document.write('<tr>');
					for(var j = 1; j <= a; j++) {
						if(i % 2 != 0 && j % 2 != 0 || i % 2 == 0 && j % 2 == 0) {
							document.write('<td class="heise" ></td>');
						} else { document.write('<td class="huise"></td>'); }
					}
					document.write('</tr>');
				}
				document.write('</table>');
			}
			chess(8);

			/**********************************************
			12.(提高题)输入一整数A，判断它是否素数（除了自己和1之外，不能被其它数整数）
			**********************************************/
			var A;
			while(true) {
				A = prompt("输入一个整数", "");
				if(A % 1 != 0) {
					continue;
				}
				var isPrime = true;
				for(var i = 2; i <= A / 2; i++) {
					if(A % i == 0) {
						isPrime = false;
						break;
					}
				}
				if(isPrime) {
					alert(A + "是素数");
				} else {
					alert(A + "不是素数");
				}
				break;
			}

			/***********************************
			13.(提高题)将100元整钞换成20元、10元、5元、2元、1元零钱，要求零钱总张数为30张，求有多少种换法？假如要求每种纸币必须至少有一张，又有多少种换法呢？
			***********************************/
			var s, w, e, y, x, count = 0;
			for(s = 0; s <= 100; s++) {
				for(w = 0; w <= 50; w++) {
					for(e = 0; e <= 20; e++) {
						for(y = 0; y <= 10; y++) {
							for(x = 0; x <= 5; x++) {
								if(s * 1 + w * 2 + e * 5 + y * 10 + x * 20 == 100 && s + w + e + y + x == 30) {
									count++;
									//		                        		console.log(s+'张1元，'+w+'张2元，'+e+'张5元，'+y+'张10元,'+x+'张20元\n');
								}
							}
						}

					}
				}
			}
			document.write("不限制纸币种类的话，总共有" + count + "种换法<br/>");

			var s, w, e, y, x, count = 0;
			for(s = 1; s <= 100; s++) {
				for(w = 1; w <= 50; w++) {
					for(e = 1; e <= 20; e++) {
						for(y = 1; y <= 10; y++) {
							for(x = 1; x <= 5; x++) {
								if(s * 1 + w * 2 + e * 5 + y * 10 + x * 20 == 100 && s + w + e + y + x == 30) {
									count++;
									//		                        		console.log(s+'张1元，'+w+'张2元，'+e+'张5元，'+y+'张10元,'+x+'张20元\n');
								}
							}
						}

					}
				}
			}
			document.write("每种纸币只有一张，有" + count + "种换法<br/>");
		</script>
	</body>

</html>